package com.shy.merch.util;


import cn.hutool.crypto.digest.DigestUtil;

import java.util.Map;
import java.util.TreeMap;

public class SignUtil {
    //生成签名
    public static String createSign(Map<String,String> params,String appSecret){
        //去掉sign参数， 不参与签名生成的
        params.remove("sign");
        //重新生成签名
        TreeMap treeMap = new TreeMap(params);

        //签名字符串， 所有参数按字典排序后 将非空参数连接为 参数1=值1&参数2=值2....最
        // 后连接"&appSecret=分配的密钥"， 将支付串使用md5处理后， 就是sign值
        StringBuilder builder = new StringBuilder();
        treeMap.forEach( (name,val)->{
            builder.append(name).append("=").append(val).append("&");
        });
        builder.append("appSecret=").append(appSecret);

        //计算MD5

        return DigestUtil.md5Hex(builder.toString());
    }
}
